package cn.edu.zafu.bigdata.bd121.im.client;

import cn.edu.zafu.bigdata.bd121.im.common.HandleMessage;
import cn.edu.zafu.bigdata.bd121.im.common.HandleUserInput;

import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

/**
 * 基于 TCP 的聊天程序
 * 要求：
 * 实现一个简单的 TCP 服务端和客户端，支持客户端发送消息给服务端，并由服务端回复消息。
 * 能够连接到同学的服务端进行通信。
 * <p>
 * 此为客户端
 * </p>
 *
 * @author 202211090121
 */
public class IMClient {

    /**
     * 服务器地址
     */
    private static final String HOST = "localhost";

    /**
     * 服务器端口
     */
    private static final int PORT = 1221;

    /**
     * 接收消息的输入流
     */
    public static InputStreamReader in;

    /**
     * 发送消息的输出流
     */
    public static PrintWriter out;

    public static void main(String[] args) {
        try (Socket socket = new Socket(HOST, PORT)) {
            System.out.println("连接成功");
            Thread messageReaderThread = new Thread(new HandleMessage(socket));
            messageReaderThread.start();
            HandleUserInput handleUserInput = new HandleUserInput(socket);
            handleUserInput.run();
        } catch (Exception e) {
            System.err.println("连接失败" + e.getMessage());
        }
    }
}
